{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "8fe19b15",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy\n",
    "import matplotlib.pyplot as plt\n",
    "from pandas import read_csv\n",
    "import math\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import LSTM\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from pandas import concat\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d273afaa",
   "metadata": {},
   "outputs": [],
   "source": [
    "from pandas import read_csv\n",
    "from datetime import datetime\n",
    "# load data\n",
    "dataset = read_csv('td13_add_new.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8f931387",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         ����ʱ��  ���й����ʣ�kw��  ����״��  ����¶�  ����¶�.1  �����������  \\\n",
      "0  2018/1/1 0:00     244033.7682      2.0    22.0      12.0          1.0   \n",
      "1  2018/1/1 0:15     232720.6402      2.0    22.0      12.0          1.0   \n",
      "2  2018/1/1 0:30     231685.6891      2.0    22.0      12.0          1.0   \n",
      "3  2018/1/1 0:45     227581.3317      2.0    22.0      12.0          1.0   \n",
      "4  2018/1/1 1:00     233482.4269      2.0    22.0      12.0          1.0   \n",
      "\n",
      "   ҹ����������  ��  ��.1  Сʱ  һ��ڼ���  һ��ڼ���.1  weekday  ʱ���  ����  �Ƿ��³�  \\\n",
      "0          1.0   1     1   0        1          1        0     1     1       1   \n",
      "1          1.0   1     1   0        1          1        0     1     1       1   \n",
      "2          1.0   1     1   0        1          1        0     1     1       1   \n",
      "3          1.0   1     1   0        1          1        0     1     1       1   \n",
      "4          1.0   1     1   1        1          1        0     1     1       1   \n",
      "\n",
      "   �Ƿ���ĩ  �Ƿ񼾽ڳ�  �Ƿ񼾽�ĩ  �Ƿ���ĩ.1  \n",
      "0       0      1      0         0  \n",
      "1       0      1      0         0  \n",
      "2       0      1      0         0  \n",
      "3       0      1      0         0  \n",
      "4       0      1      0         0  \n"
     ]
    }
   ],
   "source": [
    "print(dataset.head(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "2543c3f1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# manually specify column names\n",
    "#dataset.drop('Unnamed: 0 ', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "82c5bfba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         ����ʱ��  ���й����ʣ�kw��  ����״��  ����¶�  ����¶�.1  �����������  \\\n",
      "0  2018/1/1 0:00     244033.7682      2.0    22.0      12.0          1.0   \n",
      "1  2018/1/1 0:15     232720.6402      2.0    22.0      12.0          1.0   \n",
      "2  2018/1/1 0:30     231685.6891      2.0    22.0      12.0          1.0   \n",
      "3  2018/1/1 0:45     227581.3317      2.0    22.0      12.0          1.0   \n",
      "4  2018/1/1 1:00     233482.4269      2.0    22.0      12.0          1.0   \n",
      "\n",
      "   ҹ����������  ��  ��.1  Сʱ  һ��ڼ���  һ��ڼ���.1  weekday  ʱ���  ����  �Ƿ��³�  \\\n",
      "0          1.0   1     1   0        1          1        0     1     1       1   \n",
      "1          1.0   1     1   0        1          1        0     1     1       1   \n",
      "2          1.0   1     1   0        1          1        0     1     1       1   \n",
      "3          1.0   1     1   0        1          1        0     1     1       1   \n",
      "4          1.0   1     1   1        1          1        0     1     1       1   \n",
      "\n",
      "   �Ƿ���ĩ  �Ƿ񼾽ڳ�  �Ƿ񼾽�ĩ  �Ƿ���ĩ.1  \n",
      "0       0      1      0         0  \n",
      "1       0      1      0         0  \n",
      "2       0      1      0         0  \n",
      "3       0      1      0         0  \n",
      "4       0      1      0         0  \n"
     ]
    }
   ],
   "source": [
    "print(dataset.head(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b9af4d79",
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset.columns = ['time','总有功功率 （kw）','天气状况','最高温度','最低温度','白天风力风向','夜晚风力风向','月','天','小时','一年第几天','一年第几周','weekday','时间段','季节','是否月初','是否月末','是否季节初','是否季节末','是否周末']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "7424ebc2",
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset.drop('time', axis=1, inplace=True)\n",
    "# summarize first 5 rows\n",
    "#print(dataset.head(5))\n",
    "# save to file\n",
    "dataset.to_csv('power.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "3a01e663",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         总有功功率 （kw）  天气状况  最高温度  最低温度  白天风力风向  夜晚风力风向   月   天  小时  一年第几天  \\\n",
      "0       244033.7682  2.00  22.0  12.0     1.0     1.0   1   1   0      1   \n",
      "1       232720.6402  2.00  22.0  12.0     1.0     1.0   1   1   0      1   \n",
      "2       231685.6891  2.00  22.0  12.0     1.0     1.0   1   1   0      1   \n",
      "3       227581.3317  2.00  22.0  12.0     1.0     1.0   1   1   0      1   \n",
      "4       233482.4269  2.00  22.0  12.0     1.0     1.0   1   1   1      1   \n",
      "...             ...   ...   ...   ...     ...     ...  ..  ..  ..    ...   \n",
      "137275  188526.9574  1.15  22.5  14.2    20.4    17.4  11  30   0    334   \n",
      "137276  202457.0970  1.15  22.5  14.2    20.4    17.4  11  30   0    334   \n",
      "137277  185634.1142  1.15  22.5  14.2    20.4    17.4  11  30   0    334   \n",
      "137278  184531.0964  1.15  22.5  14.2    20.4    17.4  11  30   0    334   \n",
      "137279  184605.9313  1.15  22.5  14.2    20.4    17.4  11  30   0    334   \n",
      "\n",
      "        一年第几周  weekday  时间段  季节  是否月初  是否月末  是否季节初  是否季节末  是否周末  \n",
      "0           1        0    1   1     1     0      1      0     0  \n",
      "1           1        0    1   1     1     0      1      0     0  \n",
      "2           1        0    1   1     1     0      1      0     0  \n",
      "3           1        0    1   1     1     0      1      0     0  \n",
      "4           1        0    1   1     1     0      1      0     0  \n",
      "...       ...      ...  ...  ..   ...   ...    ...    ...   ...  \n",
      "137275     48        1    1   4     0     1      0      0     0  \n",
      "137276     48        1    1   4     0     1      0      0     0  \n",
      "137277     48        1    1   4     0     1      0      0     0  \n",
      "137278     48        1    1   4     0     1      0      0     0  \n",
      "137279     48        1    1   4     0     1      0      0     0  \n",
      "\n",
      "[137280 rows x 19 columns]\n"
     ]
    }
   ],
   "source": [
    "print(dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "4c4e13a4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method NDFrame.head of         var1(t-1)  var2(t-1)  var3(t-1)  var4(t-1)  var5(t-1)  var6(t-1)  \\\n",
      "1        0.672707    0.12500   0.483871   0.346154   0.000000   0.000000   \n",
      "2        0.643219    0.12500   0.483871   0.346154   0.000000   0.000000   \n",
      "3        0.640521    0.12500   0.483871   0.346154   0.000000   0.000000   \n",
      "4        0.629823    0.12500   0.483871   0.346154   0.000000   0.000000   \n",
      "5        0.645205    0.12500   0.483871   0.346154   0.000000   0.000000   \n",
      "...           ...        ...        ...        ...        ...        ...   \n",
      "137275   0.530375    0.01875   0.500000   0.430769   0.710526   0.713044   \n",
      "137276   0.528027    0.01875   0.500000   0.430769   0.710526   0.713044   \n",
      "137277   0.564336    0.01875   0.500000   0.430769   0.710526   0.713044   \n",
      "137278   0.520487    0.01875   0.500000   0.430769   0.710526   0.713044   \n",
      "137279   0.517612    0.01875   0.500000   0.430769   0.710526   0.713044   \n",
      "\n",
      "        var7(t-1)  var8(t-1)  var9(t-1)  var10(t-1)  var11(t-1)  var12(t-1)  \\\n",
      "1        0.000000   0.000000   0.000000    0.000000    0.000000    0.000000   \n",
      "2        0.000000   0.000000   0.000000    0.000000    0.000000    0.000000   \n",
      "3        0.000000   0.000000   0.000000    0.000000    0.000000    0.000000   \n",
      "4        0.000000   0.000000   0.000000    0.000000    0.000000    0.000000   \n",
      "5        0.000000   0.000000   0.043478    0.000000    0.000000    0.000000   \n",
      "...           ...        ...        ...         ...         ...         ...   \n",
      "137275   0.909091   0.966667   0.000000    0.912329    0.903846    0.166667   \n",
      "137276   0.909091   0.966667   0.000000    0.912329    0.903846    0.166667   \n",
      "137277   0.909091   0.966667   0.000000    0.912329    0.903846    0.166667   \n",
      "137278   0.909091   0.966667   0.000000    0.912329    0.903846    0.166667   \n",
      "137279   0.909091   0.966667   0.000000    0.912329    0.903846    0.166667   \n",
      "\n",
      "        var13(t-1)  var14(t-1)  var15(t-1)  var16(t-1)  var17(t-1)  \\\n",
      "1              0.0         0.0         1.0         0.0         1.0   \n",
      "2              0.0         0.0         1.0         0.0         1.0   \n",
      "3              0.0         0.0         1.0         0.0         1.0   \n",
      "4              0.0         0.0         1.0         0.0         1.0   \n",
      "5              0.0         0.0         1.0         0.0         1.0   \n",
      "...            ...         ...         ...         ...         ...   \n",
      "137275         0.0         1.0         0.0         1.0         0.0   \n",
      "137276         0.0         1.0         0.0         1.0         0.0   \n",
      "137277         0.0         1.0         0.0         1.0         0.0   \n",
      "137278         0.0         1.0         0.0         1.0         0.0   \n",
      "137279         0.0         1.0         0.0         1.0         0.0   \n",
      "\n",
      "        var18(t-1)  var19(t-1)   var1(t)  \n",
      "1              0.0         0.0  0.643219  \n",
      "2              0.0         0.0  0.640521  \n",
      "3              0.0         0.0  0.629823  \n",
      "4              0.0         0.0  0.645205  \n",
      "5              0.0         0.0  0.621700  \n",
      "...            ...         ...       ...  \n",
      "137275         0.0         0.0  0.528027  \n",
      "137276         0.0         0.0  0.564336  \n",
      "137277         0.0         0.0  0.520487  \n",
      "137278         0.0         0.0  0.517612  \n",
      "137279         0.0         0.0  0.517807  \n",
      "\n",
      "[137279 rows x 20 columns]>\n"
     ]
    }
   ],
   "source": [
    "# prepare data for lstm\n",
    "from pandas import DataFrame\n",
    "from pandas import concat\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "# convert series to supervised learning\n",
    "def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):\n",
    "    n_vars = 1 if type(data) is list else data.shape[1]\n",
    "    df = DataFrame(data)\n",
    "    cols, names = list(), list()\n",
    "    # input sequence (t-n, ... t-1)\n",
    "    for i in range(n_in, 0, -1):\n",
    "        cols.append(df.shift(i))\n",
    "        names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]\n",
    "    # forecast sequence (t, t+1, ... t+n)\n",
    "    for i in range(0, n_out):\n",
    "        cols.append(df.shift(-i))\n",
    "        if i == 0:\n",
    "            names += [('var%d(t)' % (j+1)) for j in range(n_vars)]\n",
    "        else:\n",
    "            names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]\n",
    "    # put it all together\n",
    "    agg = concat(cols, axis=1)\n",
    "    agg.columns = names\n",
    "    # drop rows with NaN values\n",
    "    if dropnan:\n",
    "        agg.dropna(inplace=True)\n",
    "    return agg\n",
    "\n",
    "# load dataset\n",
    "dataset = read_csv('power.csv', header=0, index_col=0)\n",
    "values = dataset.values\n",
    "# integer encode direction\n",
    "encoder = LabelEncoder()\n",
    "values[:,4] = encoder.fit_transform(values[:,4])\n",
    "# ensure all data is float\n",
    "values = values.astype('float32')\n",
    "# normalize features\n",
    "scaler = MinMaxScaler(feature_range=(0, 1))\n",
    "scaled = scaler.fit_transform(values)\n",
    "# frame as supervised learning\n",
    "reframed = series_to_supervised(scaled, 1, 1)\n",
    "# drop columns we don't want to predict\n",
    "reframed.drop(reframed.columns[[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]], axis=1, inplace=True)\n",
    "#print(reframed.head())\n",
    "print(reframed.head)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "31d34811",
   "metadata": {},
   "outputs": [],
   "source": [
    "#plt.plot(reframed)\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "b8a051ee",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(136319, 1, 19) (136319,) (960, 1, 19) (960,)\n"
     ]
    }
   ],
   "source": [
    "...\n",
    "# split into train and test sets\n",
    "values = reframed.values\n",
    "n_train_hours = int(len(reframed)-960)\n",
    "train = values[:n_train_hours, :]\n",
    "test = values[n_train_hours:, :]\n",
    "# split into input and outputs\n",
    "train_X, train_y = train[:, :-1], train[:, -1]\n",
    "test_X, test_y = test[:, :-1], test[:, -1]\n",
    "# reshape input to be 3D [samples, timesteps, features]\n",
    "train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))\n",
    "test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))\n",
    "print(train_X.shape, train_y.shape, test_X.shape, test_y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "f1dfb13d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "1894/1894 - 3s - loss: 0.0552 - val_loss: 0.0247 - 3s/epoch - 2ms/step\n",
      "Epoch 2/100\n",
      "1894/1894 - 2s - loss: 0.0328 - val_loss: 0.0223 - 2s/epoch - 926us/step\n",
      "Epoch 3/100\n",
      "1894/1894 - 2s - loss: 0.0278 - val_loss: 0.0223 - 2s/epoch - 939us/step\n",
      "Epoch 4/100\n",
      "1894/1894 - 2s - loss: 0.0270 - val_loss: 0.0224 - 2s/epoch - 927us/step\n",
      "Epoch 5/100\n",
      "1894/1894 - 2s - loss: 0.0266 - val_loss: 0.0219 - 2s/epoch - 946us/step\n",
      "Epoch 6/100\n",
      "1894/1894 - 2s - loss: 0.0267 - val_loss: 0.0219 - 2s/epoch - 913us/step\n",
      "Epoch 7/100\n",
      "1894/1894 - 2s - loss: 0.0270 - val_loss: 0.0219 - 2s/epoch - 942us/step\n",
      "Epoch 8/100\n",
      "1894/1894 - 2s - loss: 0.0268 - val_loss: 0.0218 - 2s/epoch - 913us/step\n",
      "Epoch 9/100\n",
      "1894/1894 - 2s - loss: 0.0263 - val_loss: 0.0217 - 2s/epoch - 965us/step\n",
      "Epoch 10/100\n",
      "1894/1894 - 2s - loss: 0.0261 - val_loss: 0.0217 - 2s/epoch - 953us/step\n",
      "Epoch 11/100\n",
      "1894/1894 - 2s - loss: 0.0256 - val_loss: 0.0218 - 2s/epoch - 977us/step\n",
      "Epoch 12/100\n",
      "1894/1894 - 2s - loss: 0.0256 - val_loss: 0.0218 - 2s/epoch - 954us/step\n",
      "Epoch 13/100\n",
      "1894/1894 - 2s - loss: 0.0255 - val_loss: 0.0220 - 2s/epoch - 930us/step\n",
      "Epoch 14/100\n",
      "1894/1894 - 2s - loss: 0.0254 - val_loss: 0.0218 - 2s/epoch - 919us/step\n",
      "Epoch 15/100\n",
      "1894/1894 - 2s - loss: 0.0252 - val_loss: 0.0218 - 2s/epoch - 921us/step\n",
      "Epoch 16/100\n",
      "1894/1894 - 2s - loss: 0.0250 - val_loss: 0.0227 - 2s/epoch - 922us/step\n",
      "Epoch 17/100\n",
      "1894/1894 - 2s - loss: 0.0248 - val_loss: 0.0233 - 2s/epoch - 951us/step\n",
      "Epoch 18/100\n",
      "1894/1894 - 2s - loss: 0.0247 - val_loss: 0.0234 - 2s/epoch - 928us/step\n",
      "Epoch 19/100\n",
      "1894/1894 - 2s - loss: 0.0246 - val_loss: 0.0232 - 2s/epoch - 923us/step\n",
      "Epoch 20/100\n",
      "1894/1894 - 2s - loss: 0.0246 - val_loss: 0.0225 - 2s/epoch - 930us/step\n",
      "Epoch 21/100\n",
      "1894/1894 - 2s - loss: 0.0247 - val_loss: 0.0222 - 2s/epoch - 925us/step\n",
      "Epoch 22/100\n",
      "1894/1894 - 2s - loss: 0.0247 - val_loss: 0.0221 - 2s/epoch - 935us/step\n",
      "Epoch 23/100\n",
      "1894/1894 - 2s - loss: 0.0247 - val_loss: 0.0221 - 2s/epoch - 957us/step\n",
      "Epoch 24/100\n",
      "1894/1894 - 2s - loss: 0.0246 - val_loss: 0.0221 - 2s/epoch - 928us/step\n",
      "Epoch 25/100\n",
      "1894/1894 - 2s - loss: 0.0244 - val_loss: 0.0221 - 2s/epoch - 930us/step\n",
      "Epoch 26/100\n",
      "1894/1894 - 2s - loss: 0.0244 - val_loss: 0.0221 - 2s/epoch - 930us/step\n",
      "Epoch 27/100\n",
      "1894/1894 - 2s - loss: 0.0244 - val_loss: 0.0222 - 2s/epoch - 932us/step\n",
      "Epoch 28/100\n",
      "1894/1894 - 2s - loss: 0.0244 - val_loss: 0.0222 - 2s/epoch - 944us/step\n",
      "Epoch 29/100\n",
      "1894/1894 - 2s - loss: 0.0244 - val_loss: 0.0222 - 2s/epoch - 936us/step\n",
      "Epoch 30/100\n",
      "1894/1894 - 2s - loss: 0.0243 - val_loss: 0.0222 - 2s/epoch - 917us/step\n",
      "Epoch 31/100\n",
      "1894/1894 - 2s - loss: 0.0243 - val_loss: 0.0223 - 2s/epoch - 919us/step\n",
      "Epoch 32/100\n",
      "1894/1894 - 2s - loss: 0.0243 - val_loss: 0.0223 - 2s/epoch - 932us/step\n",
      "Epoch 33/100\n",
      "1894/1894 - 2s - loss: 0.0242 - val_loss: 0.0223 - 2s/epoch - 936us/step\n",
      "Epoch 34/100\n",
      "1894/1894 - 2s - loss: 0.0242 - val_loss: 0.0223 - 2s/epoch - 956us/step\n",
      "Epoch 35/100\n",
      "1894/1894 - 2s - loss: 0.0241 - val_loss: 0.0223 - 2s/epoch - 933us/step\n",
      "Epoch 36/100\n",
      "1894/1894 - 2s - loss: 0.0241 - val_loss: 0.0224 - 2s/epoch - 925us/step\n",
      "Epoch 37/100\n",
      "1894/1894 - 2s - loss: 0.0241 - val_loss: 0.0224 - 2s/epoch - 921us/step\n",
      "Epoch 38/100\n",
      "1894/1894 - 2s - loss: 0.0240 - val_loss: 0.0224 - 2s/epoch - 913us/step\n",
      "Epoch 39/100\n",
      "1894/1894 - 2s - loss: 0.0240 - val_loss: 0.0224 - 2s/epoch - 913us/step\n",
      "Epoch 40/100\n",
      "1894/1894 - 2s - loss: 0.0239 - val_loss: 0.0225 - 2s/epoch - 927us/step\n",
      "Epoch 41/100\n",
      "1894/1894 - 2s - loss: 0.0239 - val_loss: 0.0225 - 2s/epoch - 929us/step\n",
      "Epoch 42/100\n",
      "1894/1894 - 2s - loss: 0.0239 - val_loss: 0.0225 - 2s/epoch - 915us/step\n",
      "Epoch 43/100\n",
      "1894/1894 - 2s - loss: 0.0238 - val_loss: 0.0225 - 2s/epoch - 916us/step\n",
      "Epoch 44/100\n",
      "1894/1894 - 2s - loss: 0.0238 - val_loss: 0.0226 - 2s/epoch - 996us/step\n",
      "Epoch 45/100\n",
      "1894/1894 - 2s - loss: 0.0237 - val_loss: 0.0226 - 2s/epoch - 973us/step\n",
      "Epoch 46/100\n",
      "1894/1894 - 2s - loss: 0.0236 - val_loss: 0.0226 - 2s/epoch - 950us/step\n",
      "Epoch 47/100\n",
      "1894/1894 - 2s - loss: 0.0234 - val_loss: 0.0226 - 2s/epoch - 938us/step\n",
      "Epoch 48/100\n",
      "1894/1894 - 2s - loss: 0.0234 - val_loss: 0.0226 - 2s/epoch - 941us/step\n",
      "Epoch 49/100\n",
      "1894/1894 - 2s - loss: 0.0233 - val_loss: 0.0227 - 2s/epoch - 927us/step\n",
      "Epoch 50/100\n",
      "1894/1894 - 2s - loss: 0.0233 - val_loss: 0.0227 - 2s/epoch - 918us/step\n",
      "Epoch 51/100\n",
      "1894/1894 - 2s - loss: 0.0232 - val_loss: 0.0227 - 2s/epoch - 922us/step\n",
      "Epoch 52/100\n",
      "1894/1894 - 2s - loss: 0.0231 - val_loss: 0.0227 - 2s/epoch - 960us/step\n",
      "Epoch 53/100\n",
      "1894/1894 - 2s - loss: 0.0231 - val_loss: 0.0227 - 2s/epoch - 933us/step\n",
      "Epoch 54/100\n",
      "1894/1894 - 2s - loss: 0.0231 - val_loss: 0.0227 - 2s/epoch - 932us/step\n",
      "Epoch 55/100\n",
      "1894/1894 - 2s - loss: 0.0230 - val_loss: 0.0227 - 2s/epoch - 926us/step\n",
      "Epoch 56/100\n",
      "1894/1894 - 2s - loss: 0.0229 - val_loss: 0.0227 - 2s/epoch - 931us/step\n",
      "Epoch 57/100\n",
      "1894/1894 - 2s - loss: 0.0228 - val_loss: 0.0227 - 2s/epoch - 947us/step\n",
      "Epoch 58/100\n",
      "1894/1894 - 2s - loss: 0.0227 - val_loss: 0.0227 - 2s/epoch - 1ms/step\n",
      "Epoch 59/100\n",
      "1894/1894 - 2s - loss: 0.0227 - val_loss: 0.0227 - 2s/epoch - 984us/step\n",
      "Epoch 60/100\n",
      "1894/1894 - 2s - loss: 0.0226 - val_loss: 0.0227 - 2s/epoch - 978us/step\n",
      "Epoch 61/100\n",
      "1894/1894 - 2s - loss: 0.0226 - val_loss: 0.0227 - 2s/epoch - 919us/step\n",
      "Epoch 62/100\n",
      "1894/1894 - 2s - loss: 0.0225 - val_loss: 0.0226 - 2s/epoch - 946us/step\n",
      "Epoch 63/100\n",
      "1894/1894 - 2s - loss: 0.0225 - val_loss: 0.0226 - 2s/epoch - 963us/step\n",
      "Epoch 64/100\n",
      "1894/1894 - 2s - loss: 0.0225 - val_loss: 0.0226 - 2s/epoch - 946us/step\n",
      "Epoch 65/100\n",
      "1894/1894 - 2s - loss: 0.0224 - val_loss: 0.0226 - 2s/epoch - 935us/step\n",
      "Epoch 66/100\n",
      "1894/1894 - 2s - loss: 0.0224 - val_loss: 0.0226 - 2s/epoch - 922us/step\n",
      "Epoch 67/100\n",
      "1894/1894 - 2s - loss: 0.0223 - val_loss: 0.0226 - 2s/epoch - 920us/step\n",
      "Epoch 68/100\n",
      "1894/1894 - 2s - loss: 0.0223 - val_loss: 0.0226 - 2s/epoch - 922us/step\n",
      "Epoch 69/100\n",
      "1894/1894 - 2s - loss: 0.0222 - val_loss: 0.0226 - 2s/epoch - 936us/step\n",
      "Epoch 70/100\n",
      "1894/1894 - 2s - loss: 0.0222 - val_loss: 0.0226 - 2s/epoch - 941us/step\n",
      "Epoch 71/100\n",
      "1894/1894 - 2s - loss: 0.0221 - val_loss: 0.0226 - 2s/epoch - 933us/step\n",
      "Epoch 72/100\n",
      "1894/1894 - 2s - loss: 0.0223 - val_loss: 0.0226 - 2s/epoch - 925us/step\n",
      "Epoch 73/100\n",
      "1894/1894 - 2s - loss: 0.0220 - val_loss: 0.0225 - 2s/epoch - 923us/step\n",
      "Epoch 74/100\n",
      "1894/1894 - 2s - loss: 0.0220 - val_loss: 0.0225 - 2s/epoch - 920us/step\n",
      "Epoch 75/100\n",
      "1894/1894 - 2s - loss: 0.0220 - val_loss: 0.0225 - 2s/epoch - 944us/step\n",
      "Epoch 76/100\n",
      "1894/1894 - 2s - loss: 0.0220 - val_loss: 0.0226 - 2s/epoch - 935us/step\n",
      "Epoch 77/100\n",
      "1894/1894 - 2s - loss: 0.0219 - val_loss: 0.0225 - 2s/epoch - 928us/step\n",
      "Epoch 78/100\n",
      "1894/1894 - 2s - loss: 0.0220 - val_loss: 0.0225 - 2s/epoch - 923us/step\n",
      "Epoch 79/100\n",
      "1894/1894 - 2s - loss: 0.0219 - val_loss: 0.0225 - 2s/epoch - 924us/step\n",
      "Epoch 80/100\n",
      "1894/1894 - 2s - loss: 0.0219 - val_loss: 0.0225 - 2s/epoch - 926us/step\n",
      "Epoch 81/100\n",
      "1894/1894 - 2s - loss: 0.0219 - val_loss: 0.0225 - 2s/epoch - 958us/step\n",
      "Epoch 82/100\n",
      "1894/1894 - 2s - loss: 0.0218 - val_loss: 0.0225 - 2s/epoch - 967us/step\n",
      "Epoch 83/100\n",
      "1894/1894 - 2s - loss: 0.0218 - val_loss: 0.0225 - 2s/epoch - 955us/step\n",
      "Epoch 84/100\n",
      "1894/1894 - 2s - loss: 0.0218 - val_loss: 0.0225 - 2s/epoch - 940us/step\n",
      "Epoch 85/100\n",
      "1894/1894 - 2s - loss: 0.0218 - val_loss: 0.0225 - 2s/epoch - 944us/step\n",
      "Epoch 86/100\n",
      "1894/1894 - 2s - loss: 0.0218 - val_loss: 0.0225 - 2s/epoch - 961us/step\n",
      "Epoch 87/100\n",
      "1894/1894 - 2s - loss: 0.0217 - val_loss: 0.0225 - 2s/epoch - 967us/step\n",
      "Epoch 88/100\n",
      "1894/1894 - 2s - loss: 0.0217 - val_loss: 0.0225 - 2s/epoch - 950us/step\n",
      "Epoch 89/100\n",
      "1894/1894 - 2s - loss: 0.0217 - val_loss: 0.0225 - 2s/epoch - 945us/step\n",
      "Epoch 90/100\n",
      "1894/1894 - 2s - loss: 0.0217 - val_loss: 0.0225 - 2s/epoch - 971us/step\n",
      "Epoch 91/100\n",
      "1894/1894 - 2s - loss: 0.0216 - val_loss: 0.0225 - 2s/epoch - 999us/step\n",
      "Epoch 92/100\n",
      "1894/1894 - 2s - loss: 0.0216 - val_loss: 0.0225 - 2s/epoch - 973us/step\n",
      "Epoch 93/100\n",
      "1894/1894 - 2s - loss: 0.0216 - val_loss: 0.0225 - 2s/epoch - 1ms/step\n",
      "Epoch 94/100\n",
      "1894/1894 - 2s - loss: 0.0216 - val_loss: 0.0225 - 2s/epoch - 994us/step\n",
      "Epoch 95/100\n",
      "1894/1894 - 2s - loss: 0.0215 - val_loss: 0.0225 - 2s/epoch - 994us/step\n",
      "Epoch 96/100\n",
      "1894/1894 - 2s - loss: 0.0215 - val_loss: 0.0225 - 2s/epoch - 954us/step\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 97/100\n",
      "1894/1894 - 2s - loss: 0.0215 - val_loss: 0.0225 - 2s/epoch - 1ms/step\n",
      "Epoch 98/100\n",
      "1894/1894 - 2s - loss: 0.0214 - val_loss: 0.0225 - 2s/epoch - 996us/step\n",
      "Epoch 99/100\n",
      "1894/1894 - 2s - loss: 0.0215 - val_loss: 0.0225 - 2s/epoch - 970us/step\n",
      "Epoch 100/100\n",
      "1894/1894 - 2s - loss: 0.0214 - val_loss: 0.0225 - 2s/epoch - 976us/step\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "...\n",
    "# design network\n",
    "model = Sequential()\n",
    "model.add(LSTM(50, input_shape=(train_X.shape[1], train_X.shape[2])))\n",
    "model.add(Dense(1))\n",
    "model.compile(loss='mae', optimizer='adam')\n",
    "# fit network\n",
    "history = model.fit(train_X, train_y, epochs=100, batch_size=72, validation_data=(test_X, test_y), verbose=2, shuffle=False)\n",
    "# plot history\n",
    "plt.plot(history.history['loss'], label='train')\n",
    "plt.plot(history.history['val_loss'], label='test')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "64a0d2b0",
   "metadata": {},
   "outputs": [],
   "source": [
    "# make predictions\n",
    "#trainPredict = model.predict(train_X)\n",
    "#testPredict = model.predict(test_X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "7c7a3607",
   "metadata": {},
   "outputs": [],
   "source": [
    "...\n",
    "# make a prediction\n",
    "yhat = model.predict(test_X)\n",
    "test_X = test_X.reshape((test_X.shape[0], test_X.shape[2]))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2e095d4f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(960, 1) (960, 19)\n"
     ]
    }
   ],
   "source": [
    "yhat=DataFrame(yhat)\n",
    "test_X=DataFrame(test_X)\n",
    "print(yhat.shape,test_X.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "f5b552e4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "      <th>14</th>\n",
       "      <th>15</th>\n",
       "      <th>16</th>\n",
       "      <th>17</th>\n",
       "      <th>18</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.548876</td>\n",
       "      <td>0.11250</td>\n",
       "      <td>0.672581</td>\n",
       "      <td>0.669231</td>\n",
       "      <td>0.605263</td>\n",
       "      <td>0.669565</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.633333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.884932</td>\n",
       "      <td>0.865385</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.570818</td>\n",
       "      <td>0.16875</td>\n",
       "      <td>0.596774</td>\n",
       "      <td>0.636538</td>\n",
       "      <td>0.605263</td>\n",
       "      <td>0.669565</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.887671</td>\n",
       "      <td>0.865385</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.552747</td>\n",
       "      <td>0.16875</td>\n",
       "      <td>0.596774</td>\n",
       "      <td>0.636538</td>\n",
       "      <td>0.605263</td>\n",
       "      <td>0.669565</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.887671</td>\n",
       "      <td>0.865385</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.559477</td>\n",
       "      <td>0.16875</td>\n",
       "      <td>0.596774</td>\n",
       "      <td>0.636538</td>\n",
       "      <td>0.605263</td>\n",
       "      <td>0.669565</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.887671</td>\n",
       "      <td>0.865385</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.548401</td>\n",
       "      <td>0.16875</td>\n",
       "      <td>0.596774</td>\n",
       "      <td>0.636538</td>\n",
       "      <td>0.605263</td>\n",
       "      <td>0.669565</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.887671</td>\n",
       "      <td>0.865385</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>955</th>\n",
       "      <td>0.536744</td>\n",
       "      <td>0.01875</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.430769</td>\n",
       "      <td>0.710526</td>\n",
       "      <td>0.713044</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.912329</td>\n",
       "      <td>0.903846</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>956</th>\n",
       "      <td>0.535557</td>\n",
       "      <td>0.01875</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.430769</td>\n",
       "      <td>0.710526</td>\n",
       "      <td>0.713044</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.912329</td>\n",
       "      <td>0.903846</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>957</th>\n",
       "      <td>0.554246</td>\n",
       "      <td>0.01875</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.430769</td>\n",
       "      <td>0.710526</td>\n",
       "      <td>0.713044</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.912329</td>\n",
       "      <td>0.903846</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>958</th>\n",
       "      <td>0.531761</td>\n",
       "      <td>0.01875</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.430769</td>\n",
       "      <td>0.710526</td>\n",
       "      <td>0.713044</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.912329</td>\n",
       "      <td>0.903846</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>959</th>\n",
       "      <td>0.530321</td>\n",
       "      <td>0.01875</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.430769</td>\n",
       "      <td>0.710526</td>\n",
       "      <td>0.713044</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.912329</td>\n",
       "      <td>0.903846</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>960 rows × 19 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           0        1         2         3         4         5         6   \\\n",
       "0    0.548876  0.11250  0.672581  0.669231  0.605263  0.669565  0.909091   \n",
       "1    0.570818  0.16875  0.596774  0.636538  0.605263  0.669565  0.909091   \n",
       "2    0.552747  0.16875  0.596774  0.636538  0.605263  0.669565  0.909091   \n",
       "3    0.559477  0.16875  0.596774  0.636538  0.605263  0.669565  0.909091   \n",
       "4    0.548401  0.16875  0.596774  0.636538  0.605263  0.669565  0.909091   \n",
       "..        ...      ...       ...       ...       ...       ...       ...   \n",
       "955  0.536744  0.01875  0.500000  0.430769  0.710526  0.713044  0.909091   \n",
       "956  0.535557  0.01875  0.500000  0.430769  0.710526  0.713044  0.909091   \n",
       "957  0.554246  0.01875  0.500000  0.430769  0.710526  0.713044  0.909091   \n",
       "958  0.531761  0.01875  0.500000  0.430769  0.710526  0.713044  0.909091   \n",
       "959  0.530321  0.01875  0.500000  0.430769  0.710526  0.713044  0.909091   \n",
       "\n",
       "           7    8         9         10        11   12   13   14   15   16  \\\n",
       "0    0.633333  0.0  0.884932  0.865385  0.833333  0.0  1.0  0.0  0.0  0.0   \n",
       "1    0.666667  0.0  0.887671  0.865385  1.000000  0.0  1.0  0.0  0.0  0.0   \n",
       "2    0.666667  0.0  0.887671  0.865385  1.000000  0.0  1.0  0.0  0.0  0.0   \n",
       "3    0.666667  0.0  0.887671  0.865385  1.000000  0.0  1.0  0.0  0.0  0.0   \n",
       "4    0.666667  0.0  0.887671  0.865385  1.000000  0.0  1.0  0.0  0.0  0.0   \n",
       "..        ...  ...       ...       ...       ...  ...  ...  ...  ...  ...   \n",
       "955  0.966667  0.0  0.912329  0.903846  0.166667  0.0  1.0  0.0  1.0  0.0   \n",
       "956  0.966667  0.0  0.912329  0.903846  0.166667  0.0  1.0  0.0  1.0  0.0   \n",
       "957  0.966667  0.0  0.912329  0.903846  0.166667  0.0  1.0  0.0  1.0  0.0   \n",
       "958  0.966667  0.0  0.912329  0.903846  0.166667  0.0  1.0  0.0  1.0  0.0   \n",
       "959  0.966667  0.0  0.912329  0.903846  0.166667  0.0  1.0  0.0  1.0  0.0   \n",
       "\n",
       "      17   18  \n",
       "0    0.0  1.0  \n",
       "1    0.0  1.0  \n",
       "2    0.0  1.0  \n",
       "3    0.0  1.0  \n",
       "4    0.0  1.0  \n",
       "..   ...  ...  \n",
       "955  0.0  0.0  \n",
       "956  0.0  0.0  \n",
       "957  0.0  0.0  \n",
       "958  0.0  0.0  \n",
       "959  0.0  0.0  \n",
       "\n",
       "[960 rows x 19 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_X[0]=yhat\n",
    "test_X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "02cb65cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "inv_yhat = scaler.inverse_transform(test_X)\n",
    "inv_yhat = inv_yhat[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "887968dc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# invert scaling for actual\n",
    "test_y = test_y.reshape((len(test_y), 1))\n",
    "test_X[0]=test_y\n",
    "inv_y = scaler.inverse_transform(test_X)\n",
    "inv_y = inv_y[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "64783e5b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Score: 10798.774\n"
     ]
    }
   ],
   "source": [
    "# calculate RMSE\n",
    "from math import sqrt\n",
    "#trainScore = sqrt(mean_squared_error(train_y[0], inv_yhat[0]))\n",
    "#print('Train Score: %.3f RMSE' % (trainScore))\n",
    "rmse2 = sqrt(mean_squared_error(inv_y, inv_yhat))\n",
    "print('Test Score: %.3f' % rmse2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "1c22321c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([202645.64, 191627.77, 195716.11, 188999.89, 197967.06, 156011.42,\n",
       "       182732.83, 193459.39, 207302.25, 190589.11, 180954.  , 175664.88,\n",
       "       204934.2 , 190523.22, 190183.36, 189068.  , 202351.9 , 188820.44,\n",
       "       187966.1 , 188260.81, 202347.4 , 188209.9 , 187274.12, 188039.11,\n",
       "       201723.75, 188238.81, 188991.61, 190005.36, 204858.84, 192897.81,\n",
       "       194795.78, 197673.64, 213250.  , 202483.73, 205880.19, 214698.42,\n",
       "       230514.36, 216884.69, 218693.48, 221853.84, 240502.11, 170180.69,\n",
       "       225327.97, 227439.48, 244273.7 , 226849.55, 225437.69, 223919.34,\n",
       "       237364.34, 214730.69, 217756.31, 218379.89, 236253.62, 224437.25,\n",
       "       221340.25, 223949.95, 240900.45, 225758.66, 224563.28, 225260.97,\n",
       "       242152.52, 225361.6 , 225766.36, 226239.27, 242990.02, 225850.98,\n",
       "       225701.16, 225940.66, 241592.6 , 224717.64, 219360.34, 218519.36,\n",
       "       231609.88, 212747.58, 213106.28, 213124.34, 223494.42, 211257.17,\n",
       "       211187.39, 210960.42, 224962.2 , 212493.92, 209392.12, 208767.73,\n",
       "       221268.6 , 204109.03, 203308.61, 202338.39, 217453.14, 201363.97,\n",
       "       204750.5 , 199123.34, 211720.36, 196319.12, 195185.08, 193861.42,\n",
       "       208029.23, 196837.08, 198241.1 , 197641.92, 209687.25, 195604.02,\n",
       "       193118.2 , 192331.95, 205500.86, 191712.47, 190368.89, 189978.55,\n",
       "       203735.02, 189386.67, 188047.7 , 188197.33, 199279.48, 186256.25,\n",
       "       185010.95, 185342.98, 198627.2 , 185145.23, 186904.84, 186396.45,\n",
       "       197562.47, 187267.95, 186172.89, 187770.14, 201968.62, 190443.58,\n",
       "       192744.9 , 194923.34, 209525.62, 196981.  , 199947.33, 202341.1 ,\n",
       "       221937.22, 207916.11, 210672.39, 214661.2 , 234923.02, 219483.36,\n",
       "       220165.33, 220110.4 , 238267.7 , 224794.22, 219615.69, 217818.27,\n",
       "       230750.78, 210661.53, 212720.53, 212293.08, 230580.36, 214847.9 ,\n",
       "       216405.72, 217833.78, 236181.6 , 219457.1 , 219632.42, 219009.06,\n",
       "       240049.19, 220308.75, 220988.83, 220627.98, 237091.55, 221340.3 ,\n",
       "       221295.58, 220691.92, 241272.62, 225824.3 , 221900.38, 215513.08,\n",
       "       229823.17, 211515.55, 210175.05, 210560.11, 224380.81, 209027.48,\n",
       "       208763.4 , 207650.72, 222268.66, 205531.42, 204613.95, 203096.14,\n",
       "       218694.33, 201007.14, 199615.62, 199225.14, 214375.2 , 198130.88,\n",
       "       197418.06, 194787.64, 208985.89, 192825.6 , 193301.38, 190846.16,\n",
       "       204350.7 , 194374.84, 193975.94, 194666.38, 207195.44, 192147.34,\n",
       "       192516.05, 190420.48, 203716.16, 189833.66, 188988.34, 188936.61,\n",
       "       201076.28, 186916.45, 186332.08, 184947.77, 199897.62, 185665.9 ,\n",
       "       183848.23, 185022.11, 197234.1 , 184019.27, 183912.97, 185507.69,\n",
       "       198408.94, 186304.45, 186363.7 , 186685.81, 202835.23, 191985.33,\n",
       "       193727.53, 196494.89, 210829.69, 200501.45, 203515.4 , 207400.  ,\n",
       "       226634.89, 213020.42, 215600.5 , 218291.14, 238066.92, 221094.53,\n",
       "       221833.77, 221728.64, 233306.42, 221185.06, 221921.06, 217741.11,\n",
       "       229625.86, 211221.39, 211587.36, 211811.6 , 229373.  , 214316.3 ,\n",
       "       215677.16, 216867.16, 234263.48, 219404.5 , 219468.12, 222293.52,\n",
       "       234954.08, 219983.33, 220119.7 , 219756.25, 235209.62, 220475.4 ,\n",
       "       221784.83, 221946.9 , 231271.7 , 224911.19, 218128.66, 215244.28,\n",
       "       228285.88, 210713.61, 210448.4 , 210037.72, 225888.02, 208238.08,\n",
       "       207837.52, 206302.72, 220141.95, 204830.16, 204583.83, 202968.16,\n",
       "       217217.39, 200790.28, 193053.5 , 199705.06, 214083.5 , 197913.4 ,\n",
       "       201294.92, 194946.78, 209776.72, 193801.62, 193798.23, 191920.28,\n",
       "       202621.56, 194711.66, 194048.88, 194196.31, 206676.16, 192317.03,\n",
       "       193201.62, 190228.62, 202628.94, 189671.1 , 188776.56, 188172.95,\n",
       "       201312.44, 186047.44, 185467.5 , 184213.69, 199367.45, 184328.06,\n",
       "       184202.05, 179509.05, 193325.19, 184313.06, 188868.62, 184681.92,\n",
       "       198871.4 , 186396.08, 187197.11, 187636.84, 202320.89, 191684.9 ,\n",
       "       198173.52, 194652.39, 209927.66, 197868.61, 200501.8 , 203408.38,\n",
       "       221975.4 , 209391.39, 211598.2 , 214597.8 , 232852.72, 217547.12,\n",
       "       217985.44, 218654.98, 236565.95, 220673.22, 218155.2 , 216213.36,\n",
       "       222772.88, 209289.95, 210603.69, 210457.73, 224855.53, 212726.73,\n",
       "       214961.42, 217120.1 , 233304.69, 218372.6 , 217707.02, 218430.78,\n",
       "       235186.61, 218436.95, 219181.69, 222543.3 , 234674.38, 219352.16,\n",
       "       219994.55, 220341.81, 236344.8 , 218509.77, 217257.73, 214560.58,\n",
       "       228182.86, 209940.92, 209230.05, 209260.98, 224225.9 , 207816.88,\n",
       "       207355.25, 206614.73, 221826.34, 204855.95, 208561.45, 202588.17,\n",
       "       217060.17, 200590.17, 199429.97, 199199.17, 214951.62, 198001.1 ,\n",
       "       196749.08, 195286.95, 209750.33, 193381.05, 193021.2 , 192521.39,\n",
       "       205308.1 , 194928.92, 194160.55, 193918.83, 206291.17, 191599.48,\n",
       "       191161.3 , 190447.38, 203853.67, 189215.16, 189477.7 , 187860.38,\n",
       "       200856.72, 187055.44, 185296.94, 185272.92, 199023.1 , 183190.05,\n",
       "       183930.67, 183492.12, 196684.7 , 183683.22, 184470.48, 184908.05,\n",
       "       197938.81, 186089.27, 186923.89, 188827.9 , 203429.39, 190452.56,\n",
       "       197672.36, 194974.1 , 210044.83, 199672.83, 202491.56, 205656.06,\n",
       "       224186.48, 215617.72, 214102.16, 216406.4 , 235599.12, 223822.34,\n",
       "       220143.62, 220924.58, 238133.08, 222600.38, 220625.88, 218741.3 ,\n",
       "       230295.45, 212785.4 , 214255.12, 212611.27, 230308.08, 215881.5 ,\n",
       "       216720.25, 218824.42, 236192.23, 221133.38, 220210.81, 222505.06,\n",
       "       237997.97, 221857.  , 222930.23, 222510.44, 242660.95, 223415.1 ,\n",
       "       224004.73, 224503.77, 239105.  , 221060.7 , 220611.31, 215686.05,\n",
       "       229567.56, 210578.77, 210244.53, 210027.75, 225513.7 , 208111.45,\n",
       "       207574.56, 207214.3 , 222362.2 , 205044.11, 205118.05, 202787.75,\n",
       "       218493.33, 201390.61, 200366.98, 200854.16, 214287.61, 198266.08,\n",
       "       196576.31, 200846.31, 208898.23, 192747.11, 193167.03, 191685.48,\n",
       "       205318.6 , 194196.4 , 194613.27, 193908.77, 206849.94, 191219.58,\n",
       "       190271.64, 189450.08, 203457.61, 188342.81, 188073.84, 185249.92,\n",
       "       202069.11, 186012.  , 186702.12, 186165.33, 198878.17, 184438.52,\n",
       "       183038.84, 182793.16, 198743.1 , 183312.5 , 184341.47, 184305.75,\n",
       "       199480.08, 185511.8 , 186376.19, 186934.81, 199530.95, 191601.11,\n",
       "       192935.1 , 195122.67, 212000.75, 201694.81, 206471.64, 210244.12,\n",
       "       229431.31, 214888.83, 217008.64, 219749.53, 240062.88, 223078.36,\n",
       "       223368.67, 223293.4 , 240475.1 , 223134.55, 221886.5 , 219535.78,\n",
       "       232029.61, 213880.38, 214776.55, 218578.81, 230966.42, 216226.83,\n",
       "       217044.77, 222623.22, 237848.47, 221890.02, 222113.17, 222612.69,\n",
       "       240406.7 , 222763.55, 223224.08, 223243.23, 240664.27, 224594.34,\n",
       "       223401.94, 223028.53, 240675.81, 221591.02, 219343.36, 216308.69,\n",
       "       229227.62, 210873.7 , 209645.81, 209585.8 , 224966.6 , 207723.4 ,\n",
       "       206231.23, 210739.44, 218959.23, 204066.16, 203416.89, 201998.77,\n",
       "       215915.75, 199366.36, 198684.67, 199123.34, 213256.17, 196015.75,\n",
       "       197084.83, 193104.27, 207489.56, 191888.02, 190810.1 , 193745.23,\n",
       "       203306.23, 191058.25, 192289.17, 190574.23, 203916.28, 189718.45,\n",
       "       188484.73, 187268.  , 201372.19, 187062.83, 184485.38, 184938.47,\n",
       "       198609.3 , 183950.48, 183765.9 , 183575.08, 196764.28, 180424.06,\n",
       "       182246.12, 182667.47, 194673.55, 181570.19, 182582.69, 183608.27,\n",
       "       201927.45, 184326.47, 184093.9 , 186740.1 , 198863.61, 189505.1 ,\n",
       "       191464.92, 194718.86, 207354.69, 198909.53, 203455.6 , 206430.34,\n",
       "       230282.11, 212909.92, 215412.9 , 217723.31, 234228.56, 220276.39,\n",
       "       220502.47, 221279.7 , 238127.33, 221009.66, 219368.14, 216993.86,\n",
       "       229986.98, 210514.89, 211843.05, 211858.11, 230307.84, 214593.19,\n",
       "       214674.52, 218274.56, 235386.34, 219469.84, 220050.12, 221565.31,\n",
       "       236839.33, 224017.67, 221730.97, 221046.48, 241850.69, 222102.05,\n",
       "       222840.1 , 221100.28, 236801.53, 220016.73, 218096.92, 214370.9 ,\n",
       "       227122.16, 209668.6 , 208706.56, 209542.16, 224468.66, 206695.67,\n",
       "       205661.67, 204797.  , 218887.9 , 200770.83, 201553.12, 201217.33,\n",
       "       214918.38, 199594.69, 199738.94, 199723.8 , 212660.11, 196890.23,\n",
       "       195253.75, 193986.27, 206413.84, 191959.31, 190261.67, 189938.23,\n",
       "       202640.11, 192296.9 , 193320.2 , 192877.03, 205609.98, 190395.08,\n",
       "       189401.48, 188647.11, 201181.95, 187972.03, 188231.11, 186086.34,\n",
       "       198949.83, 185507.95, 185112.47, 184129.53, 198284.2 , 182949.98,\n",
       "       182826.84, 183071.05, 195680.67, 182884.56, 183285.77, 182612.06,\n",
       "       196661.66, 184543.25, 184664.56, 185612.78, 200889.3 , 188947.2 ,\n",
       "       190479.64, 192402.64, 207934.1 , 196841.73, 200428.17, 203195.14,\n",
       "       222060.95, 206889.42, 210416.98, 213036.72, 231531.31, 216533.64,\n",
       "       217631.66, 217011.84, 233492.56, 216642.94, 216656.84, 212363.95,\n",
       "       225801.78, 207521.53, 207388.72, 208141.47, 224783.19, 211138.38,\n",
       "       211633.5 , 214348.05, 232049.4 , 214327.25, 215920.02, 216388.38,\n",
       "       232149.81, 216356.78, 216824.28, 217857.86, 233151.95, 217405.95,\n",
       "       216640.45, 217511.16, 233649.03, 216803.22, 214160.52, 211536.02,\n",
       "       225696.08, 207461.56, 206222.45, 207563.47, 221568.52, 205521.16,\n",
       "       204624.67, 203105.14, 217728.75, 200443.86, 199464.34, 199890.42,\n",
       "       214464.72, 197901.3 , 197690.61, 197558.47, 211799.1 , 196790.42,\n",
       "       193327.47, 193523.14, 208312.42, 192984.58, 190979.66, 190928.06,\n",
       "       200229.84, 193302.17, 193031.77, 192942.6 , 205965.92, 189905.14,\n",
       "       189149.98, 189430.6 , 201853.81, 185249.53, 190920.05, 186348.95,\n",
       "       200105.45, 185189.19, 184168.03, 185296.44, 197421.56, 183152.7 ,\n",
       "       182624.52, 182244.66, 195099.78, 182691.  , 183774.52, 184058.3 ,\n",
       "       198025.12, 183129.36, 184631.62, 185816.48, 199683.84, 187445.61,\n",
       "       189961.69, 190643.33, 203547.89, 191708.81, 194642.19, 197094.55,\n",
       "       216506.14, 202278.56, 204820.12, 207279.02, 226490.62, 210226.95,\n",
       "       212244.39, 211406.16, 227655.8 , 211606.1 , 209474.39, 207970.92,\n",
       "       219212.27, 201148.3 , 203492.25, 203550.66, 220609.83, 205739.9 ,\n",
       "       206494.78, 208200.14, 221932.73, 214532.62, 209721.31, 209706.62,\n",
       "       225967.81, 211019.23, 211079.5 , 211252.77, 227302.12, 212358.36,\n",
       "       211366.97, 211286.11, 228082.42, 210493.75, 208790.52, 210733.38,\n",
       "       220009.34, 202394.72, 201573.77, 202214.27, 215803.34, 199752.45,\n",
       "       198616.62, 203376.02, 213928.38, 196454.6 , 196607.19, 195476.34,\n",
       "       214611.19, 193474.92, 192543.16, 191980.25, 207067.28, 191976.12,\n",
       "       191152.44, 191187.55, 201239.9 , 188463.19, 188470.16, 188374.94,\n",
       "       200153.6 , 186337.6 , 189555.81, 189839.33, 203356.81, 187904.22,\n",
       "       186422.9 , 185135.72, 198376.27, 177181.98, 177730.44, 175937.7 ,\n",
       "       195499.36, 178816.39, 173605.97, 176276.14, 188267.47, 170888.89,\n",
       "       173950.11, 167239.95, 178141.67, 171766.39, 173368.27, 177563.38,\n",
       "       189501.55, 172373.78, 177568.23, 179165.62, 189525.11, 175600.38,\n",
       "       183456.8 , 184258.11, 192962.45, 188370.28, 193514.66, 187150.66,\n",
       "       218762.86, 205025.77, 206284.61, 211445.95, 229732.  , 214446.  ,\n",
       "       215176.8 , 215540.69, 230987.83, 214292.48, 212228.28, 209891.17,\n",
       "       222952.98, 202244.47, 204258.83, 205160.72, 219338.33, 207411.19,\n",
       "       207352.61, 210104.67, 225635.11, 210132.42, 211126.1 , 211598.9 ,\n",
       "       228657.16, 212140.34, 212100.03, 212662.97, 228814.72, 213440.77,\n",
       "       213258.56, 213169.69, 230068.22, 212272.28, 209839.47, 207211.52,\n",
       "       221841.86, 202671.81, 202782.42, 201536.56, 221219.25, 200108.56,\n",
       "       199765.33, 198615.34, 212943.62, 196828.73, 196847.5 , 194310.55,\n",
       "       209743.05, 193447.78, 193083.36, 193762.44, 206990.55, 190368.56,\n",
       "       189427.97, 188526.97, 202457.1 , 185634.11, 184531.11, 184605.95],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inv_y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "227db62c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "960 960\n"
     ]
    }
   ],
   "source": [
    "print(len(inv_y),len(inv_yhat))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "a388d8c6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([196525.88, 204943.8 , 198010.75, 200592.83, 196343.55, 202009.25,\n",
       "       174561.77, 192338.98, 199169.17, 207854.6 , 197352.55, 191193.83,\n",
       "       187762.78, 206375.39, 197310.78, 197095.17, 196386.86, 204759.84,\n",
       "       196229.52, 195685.9 , 195873.52, 204757.03, 195841.11, 195245.11,\n",
       "       195732.39, 204366.44, 195859.48, 196338.3 , 196982.19, 206328.28,\n",
       "       198814.27, 200012.67, 201824.81, 211563.23, 204842.44, 206966.53,\n",
       "       212465.38, 222315.23, 213826.67, 214952.72, 216920.08, 228553.25,\n",
       "       184157.84, 219083.33, 220398.67, 230915.11, 220031.12, 219151.66,\n",
       "       218206.14, 226591.08, 212485.45, 214369.3 , 214757.5 , 225897.1 ,\n",
       "       218528.61, 216600.39, 218225.19, 228802.55, 219351.56, 218607.1 ,\n",
       "       219041.6 , 229586.31, 219104.28, 219356.38, 219650.95, 230110.84,\n",
       "       219409.1 , 219315.75, 219464.94, 229235.75, 218703.23, 215367.83,\n",
       "       214844.3 , 222998.42, 211250.2 , 211473.66, 211484.94, 217941.52,\n",
       "       210321.48, 210277.94, 210136.48, 218855.53, 211092.16, 209158.67,\n",
       "       208769.17, 216555.75, 205859.45, 205358.72, 204751.39, 214180.58,\n",
       "       204141.  , 206260.55, 202735.62, 210610.14, 200972.61, 200258.16,\n",
       "       199423.1 , 206480.53, 199889.53, 200710.25, 200359.83, 207467.08,\n",
       "       199170.02, 197723.08, 197266.34, 204981.44, 196906.78, 196127.84,\n",
       "       195901.73, 203938.08, 195559.12, 194784.83, 194871.3 , 201318.3 ,\n",
       "       193750.47, 193032.44, 193223.81, 200936.25, 193109.84, 194124.75,\n",
       "       193831.33, 200313.36, 194334.39, 193702.38, 194624.47, 202897.34,\n",
       "       196171.08, 197506.16, 198773.38, 207370.78, 199973.6 , 201709.86,\n",
       "       203116.55, 214846.84, 206413.33, 208054.6 , 210443.8 , 222854.9 ,\n",
       "       213355.28, 213769.17, 213735.78, 224948.83, 216592.06, 213435.58,\n",
       "       212347.03, 220260.83, 208048.1 , 209279.25, 209023.3 , 220155.27,\n",
       "       210556.06, 211494.12, 212356.44, 223641.36, 213339.38, 213445.73,\n",
       "       213067.8 , 226069.25, 213856.2 , 214269.6 , 214050.2 , 224211.03,\n",
       "       214483.36, 214456.16, 214089.08, 226840.72, 217223.56, 214824.39,\n",
       "       210956.28, 219686.8 , 208558.22, 207757.86, 207987.56, 216338.97,\n",
       "       207074.17, 206917.03, 206255.72, 215048.83, 204999.5 , 204457.02,\n",
       "       203561.34, 212877.12, 202332.03, 201515.36, 201286.47, 210271.94,\n",
       "       200645.78, 200228.98, 198694.33, 207049.42, 197553.03, 197829.52,\n",
       "       196404.38, 204815.28, 198954.89, 198721.83, 199125.27, 206499.47,\n",
       "       197654.52, 197869.58, 196648.05, 204440.45, 196306.34, 195814.34,\n",
       "       195784.25, 202884.34, 194609.64, 194270.14, 193466.28, 202191.14,\n",
       "       193883.22, 192828.16, 193509.42, 200628.06, 192927.4 , 192865.73,\n",
       "       193791.34, 201316.95, 194254.08, 194288.5 , 194475.6 , 203920.66,\n",
       "       197560.03, 198576.73, 200195.05, 208660.62, 202546.16, 204321.98,\n",
       "       206620.83, 218199.4 , 209968.83, 211515.08, 213134.16, 225252.19,\n",
       "       214828.44, 215276.45, 215212.7 , 222299.36, 214883.27, 215329.4 ,\n",
       "       212802.66, 220031.97, 208894.19, 209112.58, 209246.44, 219876.69,\n",
       "       210744.72, 211561.12, 212276.47, 222891.17, 213806.12, 213844.53,\n",
       "       215555.34, 223318.8 , 214155.94, 214238.42, 214018.69, 223477.16,\n",
       "       214453.61, 215246.77, 215345.05, 221044.19, 217147.34, 213036.22,\n",
       "       211301.22, 219209.86, 208591.42, 208433.31, 208188.7 , 217743.2 ,\n",
       "       207118.34, 206880.48, 205970.22, 214251.89, 205098.7 , 204953.05,\n",
       "       203999.06, 212487.22, 202716.05, 198183.19, 202078.  , 210605.22,\n",
       "       201026.25, 203013.05, 199289.2 , 208033.28, 198620.03, 198618.02,\n",
       "       197522.11, 204163.19, 199492.62, 199102.67, 199189.4 , 206571.55,\n",
       "       198084.47, 198604.39, 196858.06, 204167.56, 196530.88, 196006.14,\n",
       "       195652.12, 203387.83, 194406.28, 194066.52, 193332.06, 202237.7 ,\n",
       "       193399.05, 193325.23, 190577.05, 198677.06, 193390.27, 196060.12,\n",
       "       193606.3 , 201944.72, 194610.58, 195080.05, 195337.84, 203985.  ,\n",
       "       197713.11, 201532.75, 199457.73, 208511.06, 201352.83, 202908.22,\n",
       "       204629.7 , 215770.95, 208190.66, 209510.66, 211310.95, 222436.25,\n",
       "       213088.31, 213353.06, 213757.83, 224736.92, 214980.3 , 213455.66,\n",
       "       212283.61, 216255.95, 208130.08, 208915.31, 208828.03, 217525.19,\n",
       "       210187.11, 211529.69, 212830.53, 222715.6 , 213587.1 , 213184.81,\n",
       "       213622.27, 223880.78, 213625.97, 214076.53, 216116.25, 223563.34,\n",
       "       214179.73, 214568.81, 214779.31, 224599.56, 213670.02, 212913.56,\n",
       "       211288.6 , 219561.27, 208519.  , 208094.28, 208112.81, 217141.03,\n",
       "       207251.12, 206975.98, 206535.  , 215680.38, 205489.02, 207695.2 ,\n",
       "       204143.39, 212794.33, 202960.45, 202274.64, 202138.28, 211523.77,\n",
       "       201430.98, 200692.6 , 199831.27, 208405.1 , 198709.89, 198498.33,\n",
       "       198204.58, 205390.55, 199293.72, 198844.7 , 198703.5 , 205971.64,\n",
       "       197349.88, 197094.4 , 196678.22, 204532.1 , 195960.36, 196113.25,\n",
       "       195171.56, 202767.77, 194703.16, 193680.22, 193666.25, 201691.11,\n",
       "       192455.23, 192885.81, 192630.86, 200320.77, 192741.95, 193199.62,\n",
       "       193454.1 , 201055.31, 194141.03, 194626.6 , 195734.84, 204282.02,\n",
       "       196681.25, 200899.2 , 199320.11, 208197.1 , 202072.42, 203729.48,\n",
       "       205596.16, 216690.2 , 211522.39, 210615.42, 211995.16, 223685.6 ,\n",
       "       216469.17, 214243.3 , 214714.7 , 225256.75, 215728.36, 214534.36,\n",
       "       213398.2 , 220418.28, 209829.02, 210706.84, 209725.14, 220426.05,\n",
       "       211680.45, 212183.48, 213448.25, 224052.72, 214840.88, 214283.86,\n",
       "       215670.6 , 225172.8 , 215278.38, 215928.19, 215673.89, 228080.39,\n",
       "       216222.1 , 216579.84, 216882.94, 225861.11, 214796.94, 214525.53,\n",
       "       211563.33, 219972.1 , 208514.55, 208315.78, 208186.92, 217496.97,\n",
       "       207049.5 , 206731.31, 206517.94, 215584.11, 205234.64, 205278.3 ,\n",
       "       203903.94, 213248.94, 203081.66, 202480.  , 202766.27, 210726.27,\n",
       "       201247.17, 200257.34, 202761.69, 207516.16, 198019.4 , 198264.53,\n",
       "       197400.05, 206398.39, 199873.25, 200117.23, 199704.92, 207300.33,\n",
       "       198131.48, 197576.97, 197096.42, 205303.7 , 196448.69, 196291.36,\n",
       "       194639.03, 204487.86, 195085.  , 195488.81, 195174.75, 202615.45,\n",
       "       194164.03, 193344.42, 193200.48, 202536.31, 193504.69, 194107.23,\n",
       "       194086.3 , 202968.4 , 194792.3 , 195298.12, 195624.98, 202998.28,\n",
       "       198354.67, 199135.11, 200415.44, 210342.75, 204268.06, 207077.42,\n",
       "       209303.56, 220764.31, 212055.25, 213315.45, 214949.36, 227233.89,\n",
       "       216940.81, 217114.86, 217069.77, 227486.58, 216974.5 , 216226.9 ,\n",
       "       214821.75, 222337.1 , 211456.69, 211988.55, 214250.84, 221692.88,\n",
       "       212850.31, 213336.97, 216668.08, 225878.88, 216228.97, 216362.56,\n",
       "       216661.72, 227444.66, 216752.12, 217028.17, 217039.67, 227602.56,\n",
       "       217850.4 , 217134.81, 216910.97, 227609.64, 216050.06, 214706.9 ,\n",
       "       212898.98, 220641.22, 209675.8 , 208949.98, 208914.55, 218074.03,\n",
       "       207815.3 , 206935.83, 209596.4 , 214477.73, 205661.53, 205279.77,\n",
       "       204446.55, 212665.38, 202901.73, 202502.05, 202759.23, 211086.52,\n",
       "       200938.33, 201564.48, 199234.12, 207677.39, 198522.55, 197891.95,\n",
       "       199609.23, 204683.16, 197858.12, 198544.61, 197588.16, 205023.25,\n",
       "       197110.6 , 196421.78, 195741.97, 203605.27, 195627.3 , 194185.16,\n",
       "       194438.84, 202066.06, 193885.45, 193782.05, 193675.08, 201038.34,\n",
       "       191906.05, 192929.67, 193166.1 , 199873.58, 192550.19, 193118.55,\n",
       "       193693.67, 203914.7 , 194096.11, 193965.84, 195446.88, 202207.75,\n",
       "       196991.5 , 198084.97, 199898.8 , 206941.52, 202233.31, 204766.44,\n",
       "       206425.58, 219849.34, 210047.52, 211450.6 , 212748.05, 222100.25,\n",
       "       214184.75, 214312.12, 214750.27, 224333.95, 214597.97, 213673.3 ,\n",
       "       212338.17, 219681.44, 208707.2 , 209450.22, 209458.66, 219864.03,\n",
       "       210990.8 , 211036.4 , 213057.98, 222762.52, 213730.55, 214057.3 ,\n",
       "       214911.3 , 223594.94, 216296.16, 215004.73, 214618.73, 226476.7 ,\n",
       "       215214.11, 215630.77, 214649.06, 223573.27, 214038.5 , 212958.11,\n",
       "       210866.17, 218054.11, 208234.05, 207696.48, 208163.42, 216551.17,\n",
       "       206573.64, 205996.67, 205514.36, 213403.02, 203270.22, 203706.06,\n",
       "       203518.97, 211173.14, 202614.97, 202695.34, 202686.9 , 209907.62,\n",
       "       201108.48, 200196.83, 199490.6 , 206416.36, 198360.69, 197413.75,\n",
       "       197233.25, 203337.66, 197836.11, 198380.38, 198144.69, 204919.89,\n",
       "       196824.2 , 196295.28, 195893.55, 202561.5 , 195533.95, 195671.95,\n",
       "       194528.75, 201374.  , 194220.19, 194009.12, 193484.31, 201020.02,\n",
       "       192854.  , 192788.14, 192918.69, 199635.58, 192818.97, 193033.48,\n",
       "       192673.28, 200157.2 , 193705.23, 193770.03, 194276.11, 202405.78,\n",
       "       196053.34, 196869.16, 197892.34, 206159.8 , 200252.95, 202160.4 ,\n",
       "       203633.22, 213745.27, 205602.27, 207486.38, 208888.75, 218894.83,\n",
       "       210765.58, 211356.14, 211022.64, 219968.98, 210824.31, 210831.8 ,\n",
       "       208528.31, 215772.27, 205939.53, 205868.69, 206270.47, 215219.44,\n",
       "       207872.27, 208137.23, 209591.86, 219178.33, 209580.69, 210435.78,\n",
       "       210687.45, 219233.28, 210670.48, 210921.8 , 211477.89, 219782.25,\n",
       "       211234.67, 210822.97, 211291.3 , 220054.81, 210910.5 , 209491.27,\n",
       "       208085.03, 215714.86, 205907.56, 205246.47, 205961.94, 213479.1 ,\n",
       "       204872.53, 204394.72, 203585.28, 211408.38, 202168.77, 201647.67,\n",
       "       201874.34, 209654.44, 200816.4 , 200704.34, 200634.06, 208225.86,\n",
       "       200225.67, 198384.23, 198488.31, 206361.75, 198201.88, 197135.3 ,\n",
       "       197107.84, 200890.53, 197248.84, 197107.67, 197061.11, 203944.98,\n",
       "       195480.22, 195088.45, 195233.95, 201751.55, 193072.5 , 196007.52,\n",
       "       193639.52, 200824.72, 193041.42, 192515.66, 193096.67, 199408.36,\n",
       "       191993.64, 191722.38, 191527.4 , 198189.14, 191756.52, 192313.23,\n",
       "       192459.22, 199726.19, 191981.66, 192754.25, 193364.8 , 200601.72,\n",
       "       194206.02, 195509.55, 195863.62, 202652.8 , 196417.95, 197949.47,\n",
       "       199236.31, 209659.97, 201977.22, 203331.81, 204649.53, 215204.98,\n",
       "       206238.83, 207332.62, 206877.52, 215860.69, 206986.  , 205832.1 ,\n",
       "       205021.62, 211149.92, 201377.16, 202623.19, 202654.28, 211923.14,\n",
       "       203823.88, 204228.47, 205144.98, 212657.42, 208579.39, 205965.48,\n",
       "       205957.55, 214911.38, 206667.77, 206700.47, 206794.36, 215661.45,\n",
       "       207394.56, 206856.28, 206812.42, 216101.2 , 206383.2 , 205463.06,\n",
       "       206512.9 , 211590.62, 202038.94, 201602.83, 201943.03, 209274.61,\n",
       "       200637.98, 200038.06, 202561.23, 208249.47, 198899.9 , 198980.08,\n",
       "       198386.5 , 208622.3 , 197339.03, 196852.77, 196559.34, 204535.8 ,\n",
       "       196557.17, 196128.36, 196146.64, 201425.7 , 194732.56, 194736.17,\n",
       "       194686.88, 197381.11, 190312.75, 191936.22, 192079.89, 199058.64,\n",
       "       191101.4 , 190355.61, 189709.77, 196456.9 , 185761.86, 186031.88,\n",
       "       185150.47, 194970.5 , 186567.38, 184008.83, 185316.6 , 191284.7 ,\n",
       "       182684.9 , 184177.  , 180916.77, 186234.53, 183111.8 , 183892.77,\n",
       "       185949.58, 191908.7 , 183407.62, 185951.97, 186739.89, 191920.64,\n",
       "       184985.  , 188870.39, 189270.56, 193669.47, 191336.62, 193951.94,\n",
       "       190721.64, 207348.81, 199938.8 , 200605.47, 203364.75, 213483.83,\n",
       "       204987.88, 205385.45, 205583.73, 214198.66, 204904.45, 203786.66,\n",
       "       202529.16, 209669.27, 198474.36, 199533.81, 200010.14, 207665.81,\n",
       "       201204.23, 201173.05, 202643.69, 211169.6 , 202658.56, 203192.52,\n",
       "       203447.16, 212874.05, 203739.16, 203717.36, 204021.45, 212963.31,\n",
       "       204442.4 , 204343.7 , 204295.6 , 213674.95, 203810.39, 202501.44,\n",
       "       201097.94, 209051.16, 198698.64, 198756.7 , 198103.5 , 208705.69,\n",
       "       197357.62, 197178.83, 196580.94, 204173.25, 195655.88, 195665.55,\n",
       "       194359.73, 202449.73, 193917.67, 193731.28, 194078.78, 200980.45,\n",
       "       192348.33, 191871.44, 191415.73, 198585.9 , 189959.58, 189407.08],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inv_yhat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "3314d790",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MAPE: 0.041945454\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn import metrics\n",
    "def mape(y_true, y_pred):\n",
    "    return np.mean(np.abs((y_pred - y_true) / y_true))\n",
    "print('MAPE:',mape(inv_y, inv_yhat))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "1f9a9a20",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2-score: 0.5165758961969451\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import r2_score\n",
    "print('R2-score:',r2_score(inv_y, inv_yhat))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "27b1d1c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1c391b8ad00>]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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dx785jfxcbJUrmFrWUDljTaubP5uuCyC4l9DJStFmJDGldmfXtS5i+P88+vHqdcatbno01FHwZVXwrkxDrvz3t9RHor79o130eInzXU+55xKayYP/vu7UyfnPPnxi7RI8WM67RgVFI9//tP5fv316vAZMxwHhfvuW23ee889+SZETZoUvc1vWRZGlsq13tjHK69Em5zm9Q6w3Xbp9wlSRN/1n//svCyE4a8cswhKEm+5hxwS74Y8q1l6GN4YQJwZb15BsTFBMO29baMV6hf2Ll1qu2g/97nq/1F5HDgwex623LLSFduOUUFJg3950byuINJaafkpasJXlJ193olfnoWMH/+8l7PPrj9fIUulngS/N2OP738fTj218j9L11OSbrJly6rN0INktbS65ZZs++W9r2wIStquNhsvK/77u2fP2jwE79+oPHovpVkQiXadE8XEifXjNBgVlCBJH4q8s93jujPOPx/uvDN6eyNNF//v/xyX4Hmo50L/iisqb9B+/OXMMo4BcNNN6fe57LLofCQl6XoeUffb9ttnn5wZZgThEVaWiy5y/IsV0UIp2vgizhPDokXOeMyiRfHH8AtK7961eQi2PIp6oYsTlN13rw0bN66YfORABcXDu/GTCor/psryIHbqFP92FbXWB2R/E8zSbZSnJeVPt97NX89cOq25skdSv1m2GTgwewXduTMcfLDd/Hj87ne1ziJ//GPnPOWtKPO8oXukzUOcY9RJk5xWYL0Wm//e69Wr9mUxuHqkDddJQYyJF5S0LvlLQgXFI62g+G+qRlbwedKLG7eJwlZrKOwNy88xx8Dtt0dvtzXRrlGIZHdBnnWlw6REubMvIs04I4Aw0nYvtrXls2CE6hZKr17Vx5s9uzZ+EefJmGjnnpddFj3hsslQQfFoxLyIIGnedJYtq/zOKihHHVV/re7gynONdIzot9gJlrG9CQqkO3erVzuCesMNTtmLeAuuR95rbcOcNstYWZSrGxuCEnYdirg2bW3RLZTx49OPr5SECkqQRnV5QboWit8238bCS1EE+/5ttVDSPoTBLrAiBSVu9b88xHXHeCxbBh9+6EwMPOooOPFEJ7yMZQLyXusbbkjfIgmSZawsTwW/Zg08/njlf+fO1ccLuw5FXJsuXaJFo1OndjNDXwXFI0uXV16rluuuy7Zfnso1bZ4bKSj+tIKCknbm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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(inv_yhat,'r')\n",
    "#plt.plot(inv_y,'b')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "334e9396",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.savefig('10days.png',dpi=400)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "517f65df",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "inv_yhat=pd.DataFrame(data=inv_yhat)\n",
    "inv_y=pd.DataFrame(data=inv_y)\n",
    "inv_y.to_csv('inv_y.csv')\n",
    "inv_yhat.to_csv('inv_yhat.csv')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
